/*
 * libCache.c
 *
 *  Created on: 07/06/2012
 *      Author: utnso
 */

#include "libCache.h"

static memcached_st *memc;

void iniciarConexionCache(char* IP, int32_t puerto) {
	printfCUCA("Entro a iniciarConexionCache.\n");
	memcached_return rc;
	memcached_server_st *servers;
	memc = memcached_create(NULL);
	servers = memcached_server_list_append(NULL, IP, puerto, &rc);
	printfCUCA("El resultado de memcached_server_list_append es [%d].\n", rc);
	if (servers != 0) {
		rc = memcached_server_push(memc, servers);
		printfCUCA("El resultado de memcached_server_puch es %d.\n", rc);
	}
}

char* obtenerDatoDeCache(char* key, size_t keySize, size_t* valueSize, uint32_t* flags, memcached_return_t* error) {
	printfCUCA("Intento obtener un dato de la cache.\n");
	char* resultado = memcached_get(memc, key, keySize, valueSize, flags, error);
	printfCUCA("El error de memcached_get es %d\n", *error);
	return resultado;
}

memcached_return_t almacenarDatoEnCache(char *key, size_t keySize, char *value, size_t valueSize, time_t tExpiracion, uint32_t flags) {
	printfCUCA("Intento almacenar un dato en la cache.\n");
	memcached_return_t resultado = memcached_set(memc, key, keySize, value, valueSize, tExpiracion, flags);
	printfCUCA("El error de memcached_set es %d\n", resultado);
	return resultado;
}

memcached_return_t borrarDatoDeCache(const char *key, size_t key_length, time_t expiration) {
	memcached_return_t resultado = memcached_delete(memc, key, key_length, expiration);
	printfCUCA("El retorno de memcached_delete es %d.\n", resultado);
	return resultado;
}

char* obtenerKeyBloque(uint32_t numBloque) {
	//TODO REVISAR
	char* key = malloc(11);
	memset(key, '\0', 11);
	sprintf(key, "%d", numBloque);
	return key;
}
